package com.example.ojcommon.enums;


import cn.hutool.core.util.ObjectUtil;
import lombok.Getter;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 题目提交状态枚举
 */
@Getter
public enum SubmitStatusEnum {
  WAITING(1, "等待中"),
  RUNNING(2, "正在判题"),
  END(3, "完成");

  private final Integer value;

  private final String text;

  SubmitStatusEnum(Integer value, String text) {
    this.text = text;
    this.value = value;
  }

  /**
   * 获取所有值的列表
   *
   * @return
   */
  public static List<Integer> getValues() {
    return Arrays.stream(values()).map(item -> item.value).collect(Collectors.toList());
  }

  /**
   * 根据数据库中的 int 获取对应的状态
   * @param value
   * @return
   */
  public static SubmitStatusEnum valueOf(Integer value) {
    if (ObjectUtil.isEmpty(value)) {
      return null;
    }
    for (SubmitStatusEnum submitStatusEnum : SubmitStatusEnum.values()) {
      if (submitStatusEnum.value.equals(value)) {
        return submitStatusEnum;
      }
    }
    return null;
  }

}
